package com.yyoo.doc.html.sax;

import lombok.Getter;
import lombok.Setter;
import org.xml.sax.Attributes;

/**
 * @author zzy
 * SAX 解析出的简单 html 元素对象
 */
@Getter
@Setter
public class SaxHtmlElement {

    /**
     * 构造方法
     * @param tagName 标签名称
     * @param attribute 标签对应的属性
     * @param ownText 标签的文本
     * @param baseUri 所在html的 baseUri
     */
    public SaxHtmlElement(String tagName, Attributes attribute, StringBuilder ownText, String baseUri) {
        this.tagName = tagName;
        this.attribute = attribute;
        this.ownText = ownText;
        this.baseUri = baseUri;
    }

    /**
     * 标签名称
     */
    private String tagName;

    /**
     * 标签的 sax 解析的属性
     */
    private Attributes attribute;

    /**
     * 标签的文本（如果有子标签，不会显示子标签的文本）
     */
    private StringBuilder ownText;

    /**
     * 所在html的 baseUri
     */
    private String baseUri;

    /**
     * 是否忽略标签（通过计算判断是否跳过该标签）
     */
    private boolean ignore;

    /**
     * 获取对应属性的值
     * @param attr 属性名称
     * @return 属性的值
     */
    public String getAttributeValue(String attr) {
        return this.attribute.getValue(attr);
    }

    /**
     * 获取标签文本
     * @return 标签文本
     */
    public String getOwnTextString() {
        return this.ownText == null?"":this.ownText.toString();
    }

    /**
     * 添加标签文本
     * @param text 添加的文本
     */
    public void appendText(String text){
        if(this.ownText == null){
            this.ownText = new StringBuilder();
        }
        this.ownText.append(text);
    }

}
